# 股票行情表的字段定义
STOCK_PRICES_SCHEMA = {
    'columns': {
        'id': 'SERIAL',  # 唯一ID
        'symbol': 'VARCHAR(20) NOT NULL',
        'start_date': 'DATE NOT NULL',  # 数据开始日期
        'end_date': 'DATE NOT NULL',    # 数据结束日期
        'period': "VARCHAR(10) NOT NULL",  # 数据周期：日、周、月
        'open': 'NUMERIC(10, 2)',
        'high': 'NUMERIC(10, 2)',
        'low': 'NUMERIC(10, 2)',
        'close': 'NUMERIC(10, 2)',
        'volume': 'BIGINT',
        'amount': 'NUMERIC(20, 2)',
        'turnover': 'NUMERIC(10, 2)',
        'created_at': 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP'
    },
    # 修改主键，确保包含分区键 start_date
    'primary_key': ['id', 'start_date'],
    'indexes': [
        {'name': 'idx_stock_prices_symbol_date', 'columns': ['symbol', 'start_date', 'end_date', 'period']}
    ],
    'partition': 'year'  # 按年分区
}

# 技术指标扩展表的字段定义
TECHNICAL_INDICATORS_SCHEMA = {
    'columns': {
        'id': 'SERIAL',  # 唯一ID
        'price_id': 'INTEGER NOT NULL',  # 对应股票行情表的ID
        'start_date': 'DATE NOT NULL',  # 数据开始日期
        'MA5': 'NUMERIC(10, 2)',
        'MA10': 'NUMERIC(10, 2)',
        'MA20': 'NUMERIC(10, 2)',
        'MA30': 'NUMERIC(10, 2)',
        'MA60': 'NUMERIC(10, 2)',
        'MACD': 'NUMERIC(10, 3)',
        'SIGNAL': 'NUMERIC(10, 3)',
        'HIST': 'NUMERIC(10, 3)',
        'K': 'NUMERIC(10, 2)',
        'D': 'NUMERIC(10, 2)',
        'J': 'NUMERIC(10, 2)',
        'RSI6': 'NUMERIC(10, 2)',
        'RSI12': 'NUMERIC(10, 2)',
        'RSI24': 'NUMERIC(10, 2)',
        'BB_middle': 'NUMERIC(10, 2)',
        'BB_upper': 'NUMERIC(10, 2)',
        'BB_lower': 'NUMERIC(10, 2)',
        'Momentum6': 'NUMERIC(10, 3)',
        'Momentum12': 'NUMERIC(10, 3)',
        'ATR': 'NUMERIC(10, 3)',
        'OBV': 'NUMERIC(20, 2)',
        'Williams_R': 'NUMERIC(10, 2)',
        'CCI': 'NUMERIC(10, 2)',
        'SAR': 'NUMERIC(10, 2)',
        'MFI': 'NUMERIC(10, 2)',
        'ADL': 'NUMERIC(20, 2)',
        'created_at': 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP'
    },
    # 修改主键，确保包含分区键 start_date
    'primary_key': ['price_id', 'start_date'],
    'foreign_keys': [
        {'column': 'price_id, start_date', 'references': 'stock_prices(id, start_date)'}
    ],
    'partition': 'year'  # 按年分区
}

# 股票列表表的字段定义
STOCK_LIST_SCHEMA = {
    'columns': {
        'code': 'VARCHAR(20) NOT NULL',
        'name': 'VARCHAR(50) NOT NULL',
        'type': 'VARCHAR(20) NOT NULL',  # 'normal', 'tech', 'st'
        'updated_at': 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP'
    },
    'primary_key': ['code'],
    'indexes': [
        {'name': 'idx_stock_list_updated', 'columns': ['updated_at']}
    ]
}
